package cn.itsource.mq._01_helloword;
import cn.itsource.mq.util.ConnectionUtil;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @description: 消息生产者
 */
public class ProducerTest {
    //队列名称
    public static final String QUEUE_HELLOWORD = "helloworld";
    /**
     * 步骤：
     * 1、创建连接
     * 2、创建信道
     * 3、创建队列
     * 4、准备消息
     * 5、发送消息
     */
    public static void main(String[] args) throws Exception {
//        //定义连接工厂
//        ConnectionFactory factory = new ConnectionFactory();
//        //设置服务地址
//        factory.setHost("localhost");
        //1、创建连接，通过工厂获取连接
        //写在try里面，含义是：到时候会自动关闭连接
        try(Connection connection = ConnectionUtil.getConnection()){
            //2、创建信道
            Channel channel = connection.createChannel();
            //3、创建队列
            /**
             * 声明队列，如果RabbitMQ中没有此队列将自动创建
             * param1:队列名称
             * param2:是否持久化
             * param3:队列是否独占此连接
             * param4:队列不再使用时是否自动删除此队列
             * param5:队列参数
             */
            channel.queueDeclare(QUEUE_HELLOWORD, true, false, false, null);
            //4、准备消息
            String message = "这是一个Hello World消息"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
            //5、发送消息
            channel.basicPublish("", QUEUE_HELLOWORD, null, message.getBytes());
            System.out.println("消息发送完毕");
        }

    }
}